1. Technical Field
The present invention relates generally to the data processing field and, in particular, to a system, apparatus and method for controlling the movement of data in a data processing system.
2. Description of the Related Art
One function of a data processing system is to move data based on a request from an external system. For efficient operation, it is important that the data processing system maintain good data movement between a requestor and a final storage medium, whether the final storage medium is a disk drive, cd-rom drive, tape drive, flash memory or the like.
There are many approaches to controlling the movement of data based on a request from an external system. One approach is to use a microprocessor to process every boundary in the data flow via service interrupts. For example, when a request is made, an interrupt can be asserted communicating to the microprocessor that a new command is available. The microprocessor can then evaluate the command and determine the size of the data transaction. If the request is a write command, the microprocessor allocates space to store the data, in either an internal or an external storage medium, and then processes the incoming data. A similar process is followed to read data from a storage medium in response to a read command.
Other approaches use hardware only or some combination of both hardware and software to control data movement. In hardware-only approaches, the hardware handles every aspect of the data movement. In approaches that use both hardware and software, the hardware processes a command, allocates memory space for the data, and moves the data; and the microprocessor intervenes in the data flow as needed, either at specifically located boundaries along the data flow, or the microprocessor can be enabled to have visibility anywhere along the flow.
A microprocessor-only approach to controlling data movement generally provides poor performance and requires a large amount of code to process all the different possible scenarios that may occur. A hardware-only solution is normally not feasible because of size and complexity, and because any changes in protocol would not be able to adapt into the fixed hardware design.
A hybrid approach, utilizing hardware with microprocessor intervention, to handle the data flow can alleviate the problems encountered in the microprocessor-only and hardware-only approaches; however, an issue arises as to the locations of the boundaries at which control of the data flow should be transferred between the hardware and the microprocessor. Specifically, a determination must be made as to which aspects of the data flow should be managed by the hardware and which aspects of the data flow should be handled by the microprocessor. If boundaries are set incorrectly, flexibility provided by the microprocessor might be lost. If the microprocessor is assigned too much responsibility, the above-described inadequacies of the microprocessor-only approach begin to arise. Increasing the responsibility of the hardware can provide better overall performance; however, if a hardware problem arises after completion of development, the microprocessor cannot be used to work around the problem, and an uncorrectable flaw might result.
The ability to accommodate new interface protocols for different applications is becoming increasingly important in the data processing field due to the ever-increasing rate at which new generations of application specific integrated circuits (ASICs) are being developed. In such an environment, it is desirable that a system for controlling the movement of data be able to accommodate multiple configurations without requiring significant and fundamental changes to the system.
There is, accordingly, a need for a system for efficiently controlling the movement of data in a data processing system that can accommodate multiple configurations without requiring fundamental changes to the system.